In the design of communications systems, bit error rate (BER) is a key consideration. Forward error correction (FEC) is often used to detect and correct symbols of a data packet received in error to improve the quality of transmission. FEC coding adds redundancy to a message by encoding the message prior to transmission. For FEC, some example error correction codes include Hamming, Bose-Chaudhuri-Hochquenghem (BCH), Reed-Solomon (RS), Viterbi, trellis, etc.
Several of these codes have been standardized in the International Telecommunication Union Telecommunication Standardization Sector (ITU-T). For example, the standardized Reed-Solomon (255, 239) code has a net coding gain (NCG) of 6.2 dB at a bit error rate (BER) of 10−15 (one error every 1015 bits) with 6.69% redundancy ratio. However, for high-speed (10 Gb/s and beyond) communication systems, FEC codes that are more powerful than the standard RS(255, 239) code have become necessary in order to achieve greater correction capability to compensate for serious transmission quality degradation. More recently, “Super-FEC” or “enhanced FEC (EFEC)” coding schemes have been developed that utilize a combination of two or more encoding schemes to provide greater BER correction capability and increase throughput.
One EFEC coding scheme, implements a concatenation of RS and BCH encoding schemes. The EFEC encoding process consists of a 10-bit RS encoding of 16 data groups followed by 1-bit BCH coding of 64 data groups. The optical data unit (ODU) data payload includes a total of 122,368 bits. The data payload bits are divided into sixteen groups (15 groups of 7650 bits and one group of 7620 bits). The ODU groups are encoded into RS codewords using RS(781,765) coding for the 7650-bit groups and RS(778,762) coding for the 7620-bit groups, which are both shortened codes of the RS(1023, 1007) code. The RS coding produces 16 RS coded data blocks, which include the ODU payload and RS parity data. The ODU payload and RS parity data form the first 124,928 bits of coded optical transport unit (OTU) frames. For ease of reference, RS parity data may be referred to as RS FEC datagrams, and such terms may be used interchangeably herein. Furthermore, data symbols and RS FEC datagrams in each RS coded data block may be referred to as RS codewords, and such terms may be used interchangeably herein. Parity bits used for RS correction of an RS codeword may be referred to as an RS FEC datagram, and such terms may be used interchangeably herein. For ease of reference, a received RS codeword that may possibly contain errors may be referred to as an received RS word.
Following RS coding, the 124,928 OTU bits are partitioned and interleaved into 64 groups of 1952 bits for BCH coding. Each of the 64 groups is BCH coded to produce interleaved BCH parity data. For ease of reference, the BCH parity data may be referred to as BCH FEC datagrams, and such terms may be used interchangeably herein. Symbols in each of the 64 BCH groups and the corresponding BCH FEC datagrams may be referred to as BCH codewords, and such terms may be used interchangeably herein. For ease of reference, a received BCH codeword that may possibly contain errors may be referred to as an received BCH word.
The BCH parity bits of the 64 BCH groups are appended to the end of the 124,928 OTU data bits to form a fully encoded OTU frame with a total of 130,560 bits.
Decoding is accomplished by performing one or more iterations of BCH decoding operations followed by RS decoding operations. In performing FEC decoding of data symbols after transmission, RS decoding may be used to correct up to eight 10-bit symbols in an received RSword. BCH decoding may be used to correct up to 8 bits in a received BCH word. If a received BCH word includes more bits in error than the maximum number of data bits that can be corrected, correction cannot be performed using the corresponding BCH FEC datagram and the original word will be kept and left unchanged. Correction of those bits, however, can possibly be performed using the RS FEC datagram. Similarly, if a received RS word contains more symbols in error than the maximum, the original word will be kept and left unchanged. Some of the data symbols in error may be recovered using the next BCH FEC datagram. After recovering the one or more bits using a BCH datagram, the number of data symbols in error in the received RS word may be less than the maximum number and vice-versa. If so, the remaining data symbols in error in the received RS word may be corrected using the corresponding RS FEC datagram. By iteratively alternating between BCH decoding and RS decoding, a larger number of missing data symbols or data bits may be recovered and correct codewords are restored.
However, in certain situations, errors may be present in an intersection between an received RS word and a received BCH word. If the number of errors presented in an intersection exceed the capability of both codes, neither of the decoding algorithms can recover those symbols or bits in error. For instance, 9 bits of a received BCH word in error may be included in nine different symbols of a received RS word. As a result, neither RS decoding nor BCH decoding can correct any of these errors.
One or more embodiments may address one or more of the above issues.